package com.itheima.controller;

import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
@RequestMapping("/depts")   //这样子抽取公共路径
@Slf4j
@RestController
public class DeptController {
    @Autowired
    private DeptService deptService0;

    /**
     * 查询部门
     * @return
     */
//    @RequestMapping("/depts")
//    @GetMapping("/depts")
    @GetMapping()
    public Result deptsList(){//这里调用service层方法
        log.info("查询全部部门数据");
        List<Dept> deptLists=deptService0.list();//调用service层方法查询部门数据

        return Result.success(deptLists);
    }

    /**
     * 删除部门
     */
    @DeleteMapping("/{id}")
    public Result deleteDept(@PathVariable Integer id){
        log.info("根据id删除部门：{}",id);
        deptService0.delete(id);
        return Result.success();
    }

    /**
     * 新增部门
     */
    @PostMapping()
    public Result addDept(@RequestBody Dept dept0){
        log.info("根据部门名称新增部门:{}"+ dept0);
        deptService0.add(dept0);
        return Result.success();//这里为什么不返回给前端新增的部门数据--答：按照数据库的视角，数据库是否返回数据给前端--增，不需要，数据库增加了即可；删同理；查需要查到的返回前端；改，数据库内修改了即可，不需要返回前端，因为当“查”的时候就会体现出来修改了
    }

    /**
     * 根据id查询到部门留给后面修改部门
     */
    @GetMapping("/{id}")
    public Result getDept(@PathVariable Integer id){
        log.info("根据id查询到要被修改的部门：{}"+id);
        List<Dept> depts=deptService0.get(id);
        return Result.success(depts);
    }

    /**
     * 根据id查询到的部门修改对应id的部门
     */
    @PutMapping()
    public Result updateDept(@RequestBody Dept dept1){
        log.info("根据id修改该部门名称");
        deptService0.update(dept1);
        return Result.success();//数据库内数据修改了也不需要返回给前端
    }
}
